﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Platform.ObjectModel;
using Platform.Storage.Entity;

namespace Platform.Linq
{
	/// <summary>
	/// Realiza a materialização de cada item da pesquisa
	/// </summary>
	[Obsolete("Será removido para simplificar o código. Utilizar direto o EntityDataObjectMaterializer.")] 
	public abstract class DataObjectMaterializer
	{

		public abstract IDataObjectBuilder CreateBuilder<T>();

		public abstract IDataObjectBuilder CreateBuilder( Type docType );



		/// <summary>
		/// Realiza a criação de uma nova instância
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <returns></returns>
		public virtual T CreateInstance<T>()
		{
			return Activator.CreateInstance<T>();
		}

		/// <summary>
		/// Realiza o parse do valor para o campo <paramref name="fieldName"/>.
		/// </summary>
		/// <param name="fieldName"></param>
		/// <param name="value"></param>
		/// <returns></returns>
		[Obsolete( "Esse método será substituído por CreateInstance" )]
		public abstract object ParseFieldValue( DataObjectName fieldName, string value );
	}

}
